
/**
 * 报销单：
 * 直接修改主表szxmid或ybje，则需要触发财务页签
 * 一般的触发流程：
 * 		业务页签增行、删行、修改行--->财务页签增行、删行、值修改--->表头的值修改
 * 还有一个流程：
 * 		1、表头修改total--->ybje--->财务页签如果为空，则增行；如果由一行则修改；如果>1则不修改
 * 		2、表头修改szxmid--->财务页签szxmid修改
 * @param itemKey 影响的字段
 */
function bxzbDataChange(itemKey){
	var headDs = getDataset('bx_bxzb');
	var finDs = getDataset('bx_fin');
	if(finDs == null)
		return;
	if(isRefresh || isCopy || isLoad)//如果是刷新、复制、加载操作则返回
		return;
	var jeValue = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('ybje'));
	var bbValue = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('bbje'));
	var szxmid = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('szxmid'));
	var cjkybje = $f(headDs.getSelectedRow().getCellValue(headDs.nameToIndex('cjkybje')));
	//如果财务页签只有一行，则修改相应的字段[‘原币金额’，‘支付原币金额’]
	if(finDs.getRowCount() == 1){
		if(itemKey == "szxmid" && szxmid != null)
			finDs.setValueAt(0,finDs.nameToIndex('szxmid'),szxmid,true);
		else if(itemKey == "ybje"){
			$setFinOtherJe2(0, $f(jeValue), bbValue, cjkybje);
		}
	} 
	else if(finDs.getRowCount() == 0){//如果为 0 行，则新加一行、只此一行
		$insert1Row2FinDs();
		if(itemKey == 'ybje')
			$setFinOtherJe2(0, $f(jeValue), bbValue, cjkybje);
	}
	$resetHeadJe(headDs, $f(jeValue),headDs.getSelectedIndex());
} 

/*财务页签插入一行,不触发事件*/
function $insert1Row2FinDs(){
	var headDs = getDataset("bx_bxzb");
	var finDs = getDataset("bx_fin");
	var newRow = finDs.getEmptyRow();
	finDs.headTrigger = true;
	var rowIndex = finDs.addRow(newRow);
	/*资金计划项目*/
	var cashprojIndex = headDs.nameToIndex('cashproj');
	if(cashprojIndex != -1){
		var cashproj = headDs.getSelectedRow().getCellValue(cashprojIndex);
		var cashproj_mc = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('cashproj_mc'));
		newRow.setCellValue(finDs.nameToIndex('cashproj'), cashproj);
		newRow.setCellValue(finDs.nameToIndex('cashproj_mc'), cashproj_mc);
	}
	//预算项目
	var jobIndex = headDs.nameToIndex('jobid');
	if(jobIndex != -1){
		var job = headDs.getSelectedRow().getCellValue(jobIndex);
		var job_mc = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('jobid_mc')); 
		newRow.setCellValue(finDs.nameToIndex('jobid'), job);
		newRow.setCellValue(finDs.nameToIndex('jobid_mc'), job_mc);
	}
	//报销人
	var jkbxrIndex = headDs.nameToIndex('jkbxr');
	if(jkbxrIndex != -1){
		var jkbxr = headDs.getSelectedRow().getCellValue(jkbxrIndex);
		var jkbxr_mc = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('jkbxr_mc'));
		newRow.setCellValue(finDs.nameToIndex('jkbxr'), jkbxr);
		newRow.setCellValue(finDs.nameToIndex('jkbxr_mc'), jkbxr_mc);
	}
}

//重设财务页签的zf、hk、cjk之间关系【不触发事件】
function $setFinOtherJe2(rowIndex, ybje, bbje, cjkybje){
	var finDs = getDataset("bx_fin");
	var row = finDs.getRow(rowIndex);
	row.setCellValue(finDs.nameToIndex('ybje'), ybje);
//	finDs.setValueAt(rowIndex, finDs.nameToIndex('ybje'), ybje, false);
//	finDs.headTrigger = true;
//	finDs.setValueAt(rowIndex, finDs.nameToIndex('bbje'), bbje, false);
	
	if(ybje > cjkybje){//如果原币金额大于冲借款金额
		row.setCellValue(finDs.nameToIndex('zfybje'), ybje-cjkybje);//支付金额=原币金额-冲借款金额
		row.setCellValue(finDs.nameToIndex('hkybje'), 0);
	}
	else{
		row.setCellValue(finDs.nameToIndex('hkybje'), cjkybje-ybje);//还款金额=冲借款金额-原币金额
		row.setCellValue(finDs.nameToIndex('zfybje'), 0);
	}
	
}

/*重新设置yb、zf、hk、cjk之间关系*/
function $resetHeadJe(ds,total,rowIndex){
	var cjkybje = $f(ds.getRow(rowIndex).getCellValue(ds.nameToIndex('cjkybje')));
	if(total > cjkybje){//如果原币金额大于冲借款金额
		ds.setValueAt(rowIndex, ds.nameToIndex('zfybje'), total-cjkybje);//支付金额=原币金额-冲借款金额
		ds.setValueAt(rowIndex, ds.nameToIndex('hkybje'), 0);
	}
	else{
		ds.setValueAt(rowIndex, ds.nameToIndex('hkybje'), cjkybje-total);//还款金额=冲借款金额-原币金额
		ds.setValueAt(rowIndex, ds.nameToIndex('zfybje'), 0);
	}
}

/*******************从cjk页面迁移而来 START*******************************************************/
/** 
 * 分配冲借款金额到财务页签中的项目
 * jkye_sum=cjkybje_sum
 */
function setBxFinJe(jkye_sum,hkybje_sum){
	var finDs = getDataset("bx_fin");
	if(finDs == null)
		return;
	var finRowCount = finDs.getRowCount();
	var ybjeIndex = finDs.nameToIndex('ybje');
	if(finRowCount == 0){
		$insertNewRowAndUpdate(jkye_sum);
	}
	var headDs = getDataset('bx_bxzb');
	var headYbje = $f(headDs.getSelectedRow().getCellValue(headDs.nameToIndex('ybje')));
	setFinCjk(jkye_sum,headYbje);
};
/*当报销金额为0时冲借款，则新增一行财务再更新*/
function $insertNewRowAndUpdate(jkye_sum){
	var finDs = getDataset("bx_fin");
	//insert
	var newRow = finDs.getEmptyRow();
	finDs.addRow(newRow);
	//update
	finDs.setValueAt(0,finDs.nameToIndex('cjkybje'),jkye_sum,true);
	//如果主表的财务核报金额不为0，则将此值写入这行的原币金额
	var headDs = getDataset('bx_bxzb');
	var bxje = headDs.getSelectedRow().getCellValue(headDs.nameToIndex('ybje'));
	if(parseFloat(bxje) > 0)
		finDs.setValueAt(0,finDs.nameToIndex('ybje'),bxje,true);
	$setFinOtherJe(0,jkye_sum,jkye_sum);
}

//设置财务页签中的其他金额
function $setFinOtherJe(index, ybje, cjkybje){
	var finDs = getDataset("bx_fin");
	if(ybje > cjkybje){//如果原币金额大于冲借款金额
		finDs.setValueAt(index, finDs.nameToIndex('zfybje'), ybje-cjkybje);//支付金额=原币金额-冲借款金额
		finDs.setValueAt(index, finDs.nameToIndex('hkybje'), 0);
	}
	else{
		finDs.setValueAt(index, finDs.nameToIndex('hkybje'), cjkybje-ybje);//还款金额=冲借款金额-原币金额
		finDs.setValueAt(index, finDs.nameToIndex('zfybje'), 0);
	}
	
}; 

/**
 * 设置报销主表的金额
 */
function setBxzbJe(cjkybje_sum,hkybje_sum)
{
	var bxDs = getDataset('bx_bxzb');
	if(bxDs == null)
		return;
	/*设置bx中的冲借款金额*/
	bxDs.setValueAt(bxDs.getSelectedIndex(),bxDs.nameToIndex('cjkybje'),cjkybje_sum);
	bxDs.setValueAt(bxDs.getSelectedIndex(),bxDs.nameToIndex('hkybje'),hkybje_sum);
};

/*******************从cjk页面迁移而来 end*******************************************************/

/*返回处理过的浮点数*/
function $f(value){
	return (value == '' || value == null)? 0 : parseFloat(value);
}
